package Encapsulation.封装;

//外部类
public class HelloWorld {
	private String name = "imooc！";
	private String name1 = "爱慕课";
	int age = 20;

	// 内部类，Inner类 在 HelloWorld类 内部
	public class Inner {
		String name = "爱慕课！";
		int age = 18;

		public void show() {
			System.out.println("内部类的name：" + name);
			System.out.println("外部类的name：" + HelloWorld.this.name);
			System.out.println("内部类的age：" + age);
			System.out.println("外部类的age：" + HelloWorld.this.age);
		}
	}

	// 外部类的方法
	public void test() {
		// 方法中的内部类
		class MInner {
			int score = 83; // 变量

			// 内部类中的方法
			public int getScore() {
				return score + 10;
			}
		}
		MInner mi = new MInner(); // 创建内部类的对象
		int newscore = mi.getScore(); // 声明变量并调用方法赋值
		System.out.println("\n姓名：" + name1 + "\n加分后的成绩：" + newscore);
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 创建外部类的对象
		HelloWorld hello = new HelloWorld();
		// 创建内部类的对象
		Inner i = hello.new Inner();
		// 调用内部类的方法
		i.show();
		// 调用外部类的方法
		hello.test();
	}

}
